#include <stdio.h>
#include "nivel2.h"
#define MAX 128

int notify(int size, const BYTE *msg){
	return ETH_OK;
}

int main(void)
{
	BYTE dst[ETH_ALEN];
	int i;
	char buff[MAX];
	int state;

	printf("Programa chorra de prueba-Envio\n");

	if(IniciarNivel2(notify)!=ETH_OK){
		printf("FALLO en INICIAR\n");
		return 1;
	}
	
	if(ObtenerDirDestino(dst)!=ETH_OK){
		printf("Error al obtener la direccion de destino\n");
		FinalizarNivel2();
		return 1;
	}

	state=SolicitarConexion(dst);
	if(state==ETH_ERROR){
		printf("FALLO en SOLICITAR CONEXION\n");
		FinalizarNivel2();
		return 1;
	}else if(state==ETH_TIMEOUT){
		printf("TIMEOUT en SOLICITAR CONEXION\n");
		FinalizarNivel2();
		return 1;
	}

	printf("Conectado\n\n\n");

	for(i=0; i<5; i++){
		fgets(buff, MAX, stdin);
		
		state=EnviarDatos((BYTE *)buff, MAX);
		if(state==ETH_ERROR){
			printf("FALLO en ENVIAR\n");
			if(FinalizarNivel2()!=ETH_OK){
				printf("FALLO al FINALIZAR NIVEL 2\n");
			}
			return 1;
		}else if(state==ETH_TIMEOUT){
			printf("TIMEOUT al ENVIAR\n");
			if(FinalizarNivel2()!=ETH_OK){
				printf("FALLO al FINALIZAR NIVEL 2\n");
			}
			return 1;
		}
			
		printf("Enviada trama correctamente\n");
	}
	
	
	state=Desconectar();
	if(state==ETH_ERROR){
		printf("FALLO en DESCONECTAR\n");
	}else if(state==ETH_TIMEOUT){
		printf("TIMEOUT en DESCONECTAR\n");
	}
	
	if(FinalizarNivel2()!=ETH_OK){
		printf("FALLO en FINALIZAR NIVEL 2\n");
	}
	
	return 0;
}
